package com.bangdao.juc;

import org.apache.logging.log4j.spi.CopyOnWrite;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @author chen
 * @create 2021-01-03
 */
public class NotSafeDemo {
    public static void main(String[] args) {
        //测试集合类是线程不安全的
//        List<String> list = new ArrayList<>();
        //线程安全 是jdk1.2 缺点：加载因子是扩展一倍
//        List<String> list = new Vector<>();
        //线程安全 匿名内部类 对ArrayList封装了  缺点：迭代器是线程不安全的
//        List<String> list = Collections.synchronizedList(new ArrayList<>());
        //线程安全的，缺点：浪费内存，数据一致性无法保证 写实复制 读写分离理念
        List<String> list = new CopyOnWriteArrayList<>();
        for (int i = 0; i < 50; i++) {
            new Thread(() -> {
                list.add(UUID.randomUUID().toString().substring(0, 8));
                System.out.println(list);
            }, String.valueOf(i)).start();
        }
    }
}
